//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  File:  hicamera_misc.h
//
//  This file contains OMAP specific ceddk extensions.
//
#ifndef __CAMERA_MISC_H
#define __CAMERA_MISC_H

#ifdef __cplusplus
extern "C" {
#endif


#define COLOR_WHITE        RGB(255,255,255)
#define COLOR_BLACK        RGB(0,0,0)
#define COLOR_GRAY         RGB(156,154,156)
#define COLOR_GRAY1        RGB(250,250,250)
#define COLOR_GRAY2        RGB(49, 52, 49)
#define COLOR_GRAY3        RGB(192, 192, 192)
#define COLOR_PEN          RGB(71, 70, 71)
#define COLOR_TRANSPARENT  RGB(0, 4, 0)
#define DEFAULT_COLOR      COLOR_BLACK

//used for camera IOCtrl
#define IOCTL_MODE_SET             0x1000
#define IOCTL_ZOOMRATIO_GET        0x1001
#define IOCTL_FREQUENCY_SET        0x1002
#define IOCTL_CAPTURE_SERIES       0x1003
 
typedef enum _FRAME_MODE_
{
    ONE_FRAME,
    TWO_FRAMES,
}FRAME_MODE;

typedef enum _FRAME_SIZE_
{
    FRAME_QVGA,
    FRAME_VGA,
}FRAME_SIZE;

typedef struct _FRAME_PHOTO_
{
    FRAME_MODE eFrameMode;
    FRAME_SIZE eFrameSize;
    TCHAR tcPath[MAX_PATH];
}FRAME_PHOTO;


typedef struct 
{
    BYTE  GPSLatitudeRef;
    LONG  GPSLatitudeDegreeNumerator;
    LONG  GPSLatitudeDegreeDenominator;
    LONG  GPSLatitudeMinuteNumerator;
    LONG  GPSLatitudeMinuteDenominator;
    LONG  GPSLatitudeSecondNumerator;
    LONG  GPSLatitudeSecondDenominator;
    BYTE  GPSLongitudeRef;
    LONG  GPSLongitudeDegreeNumerator;
    LONG  GPSLongitudeDegreeDenominator;
    LONG  GPSLongitudeMinuteNumerator;
    LONG  GPSLongitudeMinuteDenominator;
    LONG  GPSLongitudeSecondNumerator;
    LONG  GPSLongitudeSecondDenominator;

    BYTE  GPSAltitudeRef;
    LONG  GPSAltitudeNumerator;
    LONG  GPSAltitudeDenominator;    
} HI_GPS_INFO_STRU;


typedef enum _CAMERA_MODE_
{  
    EN_MODE_STILL, 
    EN_MODE_CAPTURE,
    EN_MODE_CONTACT_STILL,
    EN_MODE_MMS_CAPTURE,
    EN_MODE_FRAME_STILL,
    EN_MODE_PANAORAMA_STILL,
    EN_MODE_MOVE_STLL,
    EN_MODE_SERIES_STILL,     
    EN_MODE_GPS_STILL,   
    EN_MODE_MAX,    
}EN_CAMERA_MODE;

#define IS_VIDEO(A) ((A)==EN_MODE_CAPTURE || (A)== EN_MODE_MMS_CAPTURE)
#define IS_SERIES_OR_MOVE_STILL(A) ((A)==EN_MODE_SERIES_STILL ||(A)==EN_MODE_MOVE_STLL)

typedef struct _CAMERA_MODE_DESC_
{
    EN_CAMERA_MODE eCamMode;
    union
    {
        FRAME_PHOTO sFrame;
        HI_GPS_INFO_STRU sGpsInfo;
    };
}CAMERA_MODE_DESC;

#ifdef __cplusplus
}
#endif

#endif
